#pragma once

#ifdef   _CLASSINDLL 
#define   CLASSINDLL_CLASS_DECL           __declspec(dllexport) 
#else 
#define   CLASSINDLL_CLASS_DECL           __declspec(dllimport) 
#endif 

#include <string>
#include <map>
#include "BcstDataProvider.h"
using namespace std;
 

typedef map<string,BcstDataProvider*> BcstDataProviderMap;

class  CLASSINDLL_CLASS_DECL  BcstDataProviderFactory
{

public:
	static BcstDataProviderFactory* Instance();

	BcstDataProvider* CreateFileDataSourceBcstDataProvider(string rootPath);
	//BcstDataProvider* CreateHTTPDataSourceBcstDataProvider(string statusURL,string SlotsURL,string AdListURL);
	BcstDataProvider* CreateHTTPDataSourceBcstDataProvider(string statusURL,string SlotsURL,string AdListURL,string csAreaCode,int type);

protected:
	BcstDataProviderFactory(void);
	~BcstDataProviderFactory(void);

private:
 	static BcstDataProviderFactory* m_pInstance;
	BcstDataProvider* m_pCurrBcstDataProvider; 
	BcstDataProviderMap  m_cProviderMap;
};
